gpt4 book ai didi

c - 从C到Shell : About "system" instruction

转载 作者:行者123 更新时间:2023-11-30 15:59:42 24 4
gpt4 key购买 nike

我正在尝试将一些 C/C++ 代码转换为 UNIX shell。我进行了一些转换,但有时,我发现 C/C++ 中的代码很奇怪,可能是因为我在上下文中不理解它。更重要的是,客户端没有给我输入/输出文件或文档,因此在 UNIX 中编码非常困难。

我得到了这个:

int exec_ftpcmd(char *ftpcmd, char *IP_Server, char* icmd)
{
int cmd_st = 0;
FILE *cmd_file;
char *cmd_fname = "ftp_exe.cmd",
*out_fname = "ftp_exe.out",
cmd[100];

printf("ftp_serv: exec_ftpcmd [%s][%s] \n",icmd,ftpcmd);

cmd_file = fopen(cmd_fname,"w");
#ifndef UNIX
fprintf(cmd_file,"user test test1\n"); //just for dos
#endif
if (strlen(icmd)>0)
fprintf(cmd_file,"cd %s\n",icmd);
fprintf(cmd_file,"%s\n",ftpcmd);
fprintf(cmd_file,"quit ");
fclose(cmd_file);
memset(cmd,0,sizeof(cmd));

#ifdef UNIX
sprintf(cmd,"more %s | ftp -v %s >> %s",cmd_fname,IP_Server,out_fname); //unix
#else
sprintf(cmd,"ftp -n -s:%s %s >> %s",cmd_fname,IP_Server,out_fname); //dos
#endif
cmd_st = system(cmd);

return cmd_st;

}

我认为我从一个包含很多命令的文件中读取,并使用“系统”对其进行测试,看看它们是否正常?我可以在 UNIX 中使用 exec 执行同样的操作吗?

我读到here系统存在一些危险。在这种情况下使用它安全吗?

那么,哪一个是系统的良好等价物?我应该使用它吗?有没有更优雅的方式?

编辑我找到了 ftp_exe.cmd 的一个迷你示例:

 ever@/narcredit/vcfid>cat ftp_exe.cmd
dir /apps/VB/A01862.txt ftp_dir.cmd

最佳答案

第一个参数中的命令由 ftp 执行,并将结果附加到输出文件中。在这种情况下,使用 more 很奇怪。一行 shell 就足够了:

ftp -v $IP_SERVER >> ftp_exe.out

第一个参数中的输入以及通过标准输入给出的适当的 cd/user 命令。在整行中,这可能看起来像:

( echo "cd $icmd"; echo $ftpcmd; echo "quit") | ftp -v $ipaddress >> ftp_exe.out

关于c - 从C到Shell : About "system" instruction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8522449/

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