일부 C/C++ 코드를 UNIX 쉘로 변환하려고합니다. 저는 약간의 변환을 했습니다만, 때로는 C/C++의 코드가 이상하게 보입니다. 어쩌면 문맥에서 이해할 수 없기 때문일 수도 있습니다. 더 나아가, 클라이언트는 나에게 입출력 파일이나 문서를주지 않았기 때문에 UNIX에서 코딩하기가 끔찍합니다.C에서 쉘로 : "시스템"명령어 정보
나는이있어 :
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을 읽었습니다. 이런 맥락에서 사용하는 것이 안전합니까?
그럼 어떤 것이 시스템과 동등한가요? 그것을 사용해야합니까? 더 우아한 방법이 있습니까? 제 인수
[email protected]/narcredit/vcfid>cat ftp_exe.cmd
dir /apps/VB/A01862.txt ftp_dir.cmd
이 예제에서,'cd'는 ftp 클라이언트에 의해 실행될 것입니다. 예제에 더 잘 맞는 해결책은 다음과 같습니다.'(echo "cd $ icmd"; echo $ ftpcmd; echo "quit") | ftp -v $ ipaddress >> $ out_fname' –
@EdwardThomson : 맞아요, 고마워요. 대답을 편집했습니다. – thiton