0
我想寫一個程序,將叉,然後打開一個文件並執行它。它應該執行的文件被稱爲child,並且它已經被編譯。當我輸入./child時,它會運行。但是,當我運行此程序時,它不執行子程序,並提示我輸入「執行失敗」的錯誤消息。我做錯了什麼?無法獲得execvp來執行文件
這是我的父類
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/wait.h>
int main (int argc, char **argv)
{
pid_t parent = getpid();
pid_t pid = fork();
if (pid == -1)
{
// error, failed to fork()
}
else if (pid > 0)
{
int status;
waitpid(pid, &status, 0);
}
else
{
int var = execvp("./child", NULL);
if(var < 0)
{
printf("Execution failed");
}
}
exit(0); // exec never returns
}
這是孩子
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char **argv)
{
printf ("Im the child");
exit (0);
}
1.請仔細閱讀文檔。 2.打印'errno',如果可能'strerror(errno)',它說什麼? 3.你爲什麼認爲'./ child'應該被傳遞給'execvp()'? 3.第二個參數應該是什麼? 4.您是否閱讀過文檔?我不認爲你這樣做,因爲你會知道第二個參數應該是什麼。不要太壞,但請在提問前閱讀文檔。 –
它可以是可以改進的(編譯器對於主...的很多警告),但對我來說代碼起作用。 –
你能想到爲什麼它不適合我的任何原因嗎?子程序從不執行。 – Rubiks