gpt4 book ai didi

c - C 中 system() 的问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:18 24 4
gpt4 key购买 nike

我对 C 编程还很陌生。我使用的是 Mac,我刚刚使用 Matlab 创建了这个应用程序。这个应用程序的作用是,根据一些数据创建一个 .txt。当我直接从终端运行它时,它会创建我的 .txt 文件,但是当我尝试使用以下代码(第一个测试代码)执行此应用程序时:

    int main(int argc, const char * argv[])
{
char test_Exe[BUFSIZ];

// Build a buffer, and execute the commands within it

strcpy (test_Exe, "/Users/pepe1503/Documents/Pepe/Stage_Bruker/HS_Conversion_Topspin_Bucket_Matlab/matlab/MP_ToolBox/small_toolbox/test_Exe_D2O/distrib/run_test_Exe_D2O.sh");
strcat (test_Exe, " /Applications/MATLAB/MATLAB_Compiler_Runtime/v715 /Users/pepe1503/Documents/Pepe/Stage_Bruker/HS_Conversion_Topspin_Bucket_Matlab/matlab/MP_ToolBox/small_toolbox/D20/nmr/Agrifood_Caviar_Sturgeon_D2O/4/pdata");

printf ("Executing your Matlab program: %s\n", test_Exe);
system (test_Exe);



return 0;
}

我得到了与终端相同的打印输出,但它没有构建我的 .txt 文件。

有谁知道原因吗?

你好!

根据您的建议,我最近将我的代码更改为(以防万一,将我的最后一个程序保留在另一个代码中):

    int main(int argc, const char * argv[])
{

char* arg_list[] = {
"run_test_Exe_D2O.sh",
"/Applications/MATLAB/MATLAB_Compiler_Runtime/v715",
"/Users/pepe1503/Documents/Pepe/Stage_Bruker/HS_Conversion_Topspin_Bucket_Matlab/matlab/MP_ToolBox/small_toolbox/D20/nmr/Agrifood_Caviar_Sturgeon_D2O/4/pdata",
NULL
};


pid_t child_pid;
child_pid = fork();

if ( child_pid != 0 ) {

// This is the parent process.
return child_pid;
}

else {

// Now execute PROGRAM, searching for it in the path.

fprintf(stdout, "\n");
fprintf(stdout, "Executing your Matlab program:\n");

execvp("/Users/pepe1503/Documents/Pepe/Stage_Bruker/HS_Conversion_Topspin_Bucket_Matlab/matlab/MP_ToolBox/small_toolbox/test_Exe_D2O/distrib/run_test_Exe_D2O.sh", arg_list);

// The execvp function returns only if an error occurs.
fprintf (stderr, "an error occurred in execvp\n");
abort ();
}

return 0;
}

它仍然执行应用程序,现在不像 system() 那样打印应用程序的消息,但它仍然不会创建我可以通过从我的终端执行它来获取的 .txt。更准确地说,system() 它确实创建了我的 .txt,但在程序执行后将其删除。

关于为什么它不打印我的应用程序消息以及为什么它创建它但删除它的任何建议?

最佳答案

您正在尝试执行以下程序:“/Users/pepe1503/Documents/Pepe/Stage_Bruker/HS_Conversion_Topspin_Bucket_Matlab/matlab/MP_ToolBox/small_toolbox/test_Exe_D2O/distrib”

你确定这是你想要的吗?

关于c - C 中 system() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23886863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com