Hola a todos, tengo un problema al llamar a esta función, es un ejemplo de crear varios procesos:
Como se puede ver espera un primer parametro int y un array tipo char.
void crearPadreHijo(int argc, char argv[]){
if(argc != 2) {
printf("Numero de parametros incorrectos. Uso: %s [entero]\n",argv[0]);
exit(EXIT_FAILURE);
}
int var=atoi(argv[1]);
printf("Entrada: %d\n",var);
int ret;
ret=fork();
if(ret>0) {
/* tratamiento del padre */
var+=2;
printf("Padre: %d\n",var);
wait(NULL);
}
else if(ret == 0) {
/* tratamiento del hijo */
var-=4;
printf("Hijo: %d\n",var);
exit(EXIT_SUCCESS);
}
else if(ret == -1) {
perror("Fallo en fork()\n");
exit(EXIT_FAILURE);
}
}
Desde main hago:
char arr[10];
arr[0] = "1";
crearPadreHijo(2, arr);
Y al compilar me responde:
main.c: In function ‘crearPadreHijo’:
main.c:103:3: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
printf("Numero de parametros incorrectos. Uso: %s [entero]\n",argv[0]);
^
main.c:107:2: warning: passing argument 1 of ‘atoi’ makes pointer from integer without a cast [enabled by default]
int var=atoi(argv[1]);
^
In file included from main.c:15:0:
/usr/include/stdlib.h:147:12: note: expected ‘const char *’ but argument is of type ‘char’
extern int atoi (const char *__nptr)
^
main.c: In function ‘main’:
main.c:143:12: warning: assignment makes integer from pointer without a cast [enabled by default]
arr[0] = "1";
^
He probado de varias maneras y no consigo que funcione.