Я создал программу, которая получает путь к каталогу, компилирует файлы в папках этого каталога и выполняет их.
Теперь я попытался использовать execl
, но я не знаю, как называется исполняемый файл. файлы будут до запуска программы.
Поскольку имя файла - это имя папки, в которой он находится (например, у меня есть .../omer/omer.c
, и я компилирую его в omer) теперь, когда я выполняю Я хочу сделать что-то подобное для правильной работы:
execl("./omer","./omer",NULL);
Я пытался это сделать (у меня есть имя файла):
execl("./%s",fileName,"./%s",fileName);
, но это не ничего не делать Теперь проблема в том, что я не могу использовать strcat()
, поэтому я стараюсь избегать создания функции для создания строки, в начале которой стоит «./».
Есть ли способ делать то, что я пытался, не используя что-то вроде strcat()
или нет способа избежать этого (в основном я хочу вставить пользовательскую строку в execl
)?
Спасибо за помощь!
edit : добавление кода по запросу:
cFilePath =
readStudentcFilePath(confContent[0],studentName,strLeng(confContent[0]));
pid = fork();
if(pid<0)
{
fprintf(stderr, "Forking Error!\n");
exit(FORK_ERR);
}
if(pid == 0)
{
execl("/usr/bin/gcc","gcc",cFilePath,"-o",studentName,NULL);
fprintf(stderr, "Failed to Execute file 'gcc' \n");
exit(EXEC_ERR);
}
pid = fork();
if(pid<0)
{
fprintf(stderr, "Forking Error!\n");
exit(FORK_ERR);
}
if(pid == 0)
{
studentOutFd = open("test_output.txt",O_WRONLY|O_TRUNC|O_CREAT);
if(studentOutFd < 0 )
{
fprintf(stderr, "Error Opening File 'test_output.txt'\n");
exit(FILE_OPEN_ERR);
}
dup2(STDIN_FILENO,inFd);
dup2(STDOUT_FILENO,studentOutFd);
execl("./%s",studentName,"./%s",studentName,NULL);
fprintf(stderr, "Error Executing File %s\n", studentName);
exit(EXEC_ERR);
}