Foros del Web » Administración de Sistemas » Unix / Linux »

Llamadas al Sistema.......

Estas en el tema de Llamadas al Sistema....... en el foro de Unix / Linux en Foros del Web. Alguien sabe realizar llamadas al sistema en linux, se realizan en C, el problema es que tengo q realizar la llamada al sistema de la ...
  #1 (permalink)  
Antiguo 15/08/2003, 07:51
 
Fecha de Ingreso: agosto-2003
Mensajes: 3
Antigüedad: 21 años, 4 meses
Puntos: 0
Pregunta Llamadas al Sistema.......

Alguien sabe realizar llamadas al sistema en linux, se realizan en C, el problema es que tengo q realizar la llamada al sistema de la orden tail, y no tengo mucha idea de como va eso. Espero vuestra ayuda. Gracias de antemano.
  #2 (permalink)  
Antiguo 18/08/2003, 13:48
 
Fecha de Ingreso: febrero-2003
Mensajes: 11
Antigüedad: 21 años, 10 meses
Puntos: 0
Tail no es una llamada al sistema

Bueno, yo se hacer llamadas al sistema de Linux, pero tail es un comando de Linux que muestra el final de un archivo.

$ tail -n 3 archivo

Muestra las tres ultimas lineas de un archivo.

He mirado en el archivo "unistd.h" donde estan las 190 llamadas al sistema de Linux y tail no aparece.

Pero bueno, yo te pongo un ejemplo de llamada al systema linux en C.

Es igual que cualquier otra funcion:

/* Llamada a stat */
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>

int main(void){

struct stat s;
if( stat("/archivo", &s) ){
/* hacer algo con s */

}else{
printf("No funciono stat\n");
}
}

Las llamadas al sistema siempre devuelven 1 cuando tienen exito y un valor negativo si no.

Puedes ver el numero de error , en el valor de la variable errno.

#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>

extern int errno;

int main(void){
struct stat s;
if( stat("/archivo", &s) ){
/* hacer algo con s */
if( S_ISDIR(s) ) printf("/archivo es un directorio");
}else{
printf("No funciono stat\n");
if (errno == EPERM ) printf("No tienes permisos");
}
}

Por lo demas las llamadas al sistema de Linux son exactamente iguales a cualquier otra funcion en C:

Última edición por vfgt; 18/08/2003 a las 14:01
  #3 (permalink)  
Antiguo 19/08/2003, 04:22
 
Fecha de Ingreso: agosto-2003
Mensajes: 3
Antigüedad: 21 años, 4 meses
Puntos: 0
Gracias vfgt, ya sé que tail no es una llamada, pero tengo que hacer un ejercicio en C donde hacer la llamada al sistema de la funcion tail, head y wc; y mi pregunta era por si alguien había hecho esto alguna vez ya que no veo muy bien como hacerlo. Gracias.
  #4 (permalink)  
Antiguo 19/08/2003, 05:28
 
Fecha de Ingreso: febrero-2003
Mensajes: 11
Antigüedad: 21 años, 10 meses
Puntos: 0
Si hombre eso es facilisimo:

Se hace con la funcion system() tienes mas informacion en "man 3 system"

Si pusieras el texto del ejercicio ....

Una aproximacion facil seria:

#include <stdlib.h> /* para system() */
#include <stdio.h> /* para printf y fopen */

int main( void ){

int retval;
FILE* f;
char c;

retval = system("tail ./archivo>./salida");

if( (retval != 127) && (retval != 1) ){
if( (f = fopen("./salida","r")) != null){
printf("salida de tail:\n");
while( ( c= fgetc(f) ) != EOF ){
ptuc(c);
}
fclose(f);
}else{
printf("No se puede abrir la salida de tail");
}
}else{
printf("Fallo la llamada a system()\n");
return;
}
}

Es una aproximacion facilona, ya que rediriges la salida a un archivo, y lees el archivo.

Recuerda que esto esta escrito de memoria, a toda prisa y puede contener errores.

Espero que esto te ayude.
  #5 (permalink)  
Antiguo 19/08/2003, 06:40
 
Fecha de Ingreso: agosto-2003
Mensajes: 3
Antigüedad: 21 años, 4 meses
Puntos: 0
Vfgt eres un tio cojonudo, me ayudas mucho, te lo agradezco, si pudieras darme tu email te enviaría realmente un archivo adjunto con lo que tengo que hacer, la verdad es que te veo bastante puesto en el tema y la verdad me hacía falta alguien como tu para poder ayudarme, si no te importa y me pudieras dar tu email te lo adjunto para que le eches un vistacito. Muchísimas gracias.
  #6 (permalink)  
Antiguo 19/08/2003, 07:22
 
Fecha de Ingreso: febrero-2003
Mensajes: 11
Antigüedad: 21 años, 10 meses
Puntos: 0
Email enviado ....

  #7 (permalink)  
Antiguo 23/05/2008, 10:30
 
Fecha de Ingreso: mayo-2008
Mensajes: 1
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Llamadas al Sistema.......

Hola, necesito hacer una llamada del sistema direktamente al kernell de linux, haciendo algunas averiguaciones he llegado a saber ke tengo ke editar el kontenido de unistd.h pero eso es precisamente lo ke no se komo hacer, agradeceria su ayuda kon esto, gracias
  #8 (permalink)  
Antiguo 23/05/2008, 12:20
Avatar de AleSanchez
Colaborador
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 3.692
Antigüedad: 20 años, 3 meses
Puntos: 47
Respuesta: Llamadas al Sistema.......

Y seguiiiimos reviviendo temas de hace años.
Por favor, abrí tu propio tema.
__________________
¡Volviendo a la programación!
  #9 (permalink)  
Antiguo 23/05/2008, 13:55
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 20 años, 5 meses
Puntos: 76
Respuesta: Llamadas al Sistema.......

¡Lapidación pública ya para los resucitadores de temas!
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
  #10 (permalink)  
Antiguo 23/05/2008, 14:55
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años, 1 mes
Puntos: 655
Respuesta: Llamadas al Sistema.......

Cerrado, no se permite revivir temas viejos.

eskurra, te sugiero leer lo siguiente:
Lee Las Políticas de Foros del Web.
Lee este tema==> Mejoremos la ortografía.

A los demás, les agradecería que por favor reporten , mensajes revividos u otras anomalías para no estar poniendo más mensajes sobre los mismos.

Gracias.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 20:56.