0
我嘗試使用execvp
來執行命令ls -l
。 我有代碼如何使用execvp實現命令ls -l?
execvp("ls",&argv[0]);
工作不錯,但我用
execvp("ls -l",&argv[0]);
不起作用
我嘗試使用execvp
來執行命令ls -l
。 我有代碼如何使用execvp實現命令ls -l?
execvp("ls",&argv[0]);
工作不錯,但我用
execvp("ls -l",&argv[0]);
不起作用
的第一個參數execvp()
需要是要運行的二進制名稱。你不能在那裏添加額外的參數。參數列表來自&argv[0]
。你需要創建一個新的數組來插入你的參數。類似這樣的:
char** new_args = malloc((argc + 1) * sizeof(char*));
new_args[0] = argv[0];
new_args[1] = "-l";
memcpy(&new_args[2], &argv[1], (argc - 1) * sizeof(char*));
execvp("ls", new_args);