++Taz a écrit :
ton code compile meme pas alors meci de reposer un truc potable
|
tu es gentil mais si tu veux que je te file les 1500 lignes de code sur le forum il n'y a pas de problème je te file plus de code comme ca tu es content mais cela ne va pas t'avancer à grand chose étant donné que je ne poste pas les fichiers
#include "common.h"
#include "semaphore.h"
#include "sharedMemory.h"
Si tu veux vraiment m'aider alors je ne pense pas que compiler mon code soit nécéssaire, reprend juste le principe :
je suis dans le pere que tape des commandes qui sont interprété dans un fils crée par popen et je récupère le résultat grace au pipe fourni par popen.
#include<errno.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/wait.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include <sys/ipc.h>
#include<unistd.h>
#include <signal.h>
#include "common.h"
#include "semaphore.h"
#include "sharedMemory.h"
int shmid;
int semid;
#include "listenConnection.h"
void arret(int signal)
{
sem_remove(semid);
shm_detach(shmid);
shm_remove(shmid);
exit(0);
}
int main_work(char *argv[])
{
int pid;
char buffer_stdin[100];
char buffer_stdout[SHM_SIZE - 100];
FILE* a;
switch(pid = fork())
{
case -1 :
perror("\nErreur lors du fork concernant l'initialisation du serveur d'ecoute de connexion\n" );
exit(EXIT_FAILURE);
case 0:
//init_listenConnection(argv);
while(1)
{
sleep(1);
P(semid);
ls_write(sock,data->command , sizeof(data->command));
ls_write(sock,data->result , sizeof(data->result));
V(semid);
}
break;
default :
while (1)
{
P(semid);
printf("Travail collaboratif#>" );
fgets(buffer_stdin,sizeof(buffer_stdin),stdin);
strcpy(data->command, buffer_stdin);
if (strlen(buffer_stdin)-1 != 0)
{
if ((a = popen(buffer_stdin,"r" )) == NULL)
perror("\nProblème avec le système de saisie des commandes" );
fgets(buffer_stdout,sizeof(buffer_stdout),a);
printf("%d",strlen(buffer_stdout));
printf("%s",buffer_stdout);
strncpy(data->result, buffer_stdout,sizeof(buffer_stdout));
pclose(a);
}
else
{
strncpy(data->result,"\0",sizeof(buffer_stdout));
}
V(semid);
}
}
}
int main (int argc, char* argv[])
{
struct sigaction a;
a.sa_handler = arret;
sigemptyset(&a.sa_mask);
a.sa_flags = 0;
sigaction(SIGINT,&a,NULL);
shmid = initshm();
semid = init_sem();
sem_set_value(semid,1);
main_work(argv);
exit(0);
}
---------------
L'été il fait bo