이 짧은 코드에서이 런타임 세그먼트 화 오류를 시도하는 데 문제가 있습니다. 나는 그것이 코드에서 system()과 strcpy()를 사용하는 것과 관련이 있다고 의심하지만,이 오류 유형에 대해 경험하지 못했기 때문에 나는 무엇을해야할지 확신이 없으며 지금까지 많은 유용한 페이지를 발견하지 못했다.strcpy() (의심되는)로 인한 세그먼트 결함 (코어 덤프) 오류
코드 :
#include <stdio.h>
#include <string.h>
int main(){
char command[31], string[128];
strcpy(string, (char *)system("grep -Po '(?<=testString\\s)\\S+' File"));
string[strlen(string)] = '\0';
printf("%s", string);
return 0;
}
내가 프로그램을 컴파일하기 위해 GCC 4.7.3를 사용하고 있습니다. 나는이 일에 많은 도움을 주시면 감사하겠습니다.
당신의'int' 반환 값을 캐스팅하고 ['system'] (http://linux.die.net/man/3/system)를에 : 여기
코드입니다 문자열 ... 좋은 일이 올 수 없습니다. –system''의 귀하의 사용이 잘못, 당신은 사용할 수 있습니다 [는 popen (3)] (http://man7.org/linux/man-pages/man3/popen.3.html) –
시스템을 사용하거나 다른 API cal을 사용하는 경우 해당 호출과 관련된 설명서를 읽고 받아 들여지고 반환되는 내용을 확인해야합니다. 'system'은 당신이 실행중인 명령의 출력을 반환하지 않습니다. 리턴 Z 드만 제공합니다. 출력을 캡쳐하려면,'system' 호출을 호출 후에 열거 나 읽는 파일로 출력 시키거나 파이프 ('popen' 등)를 사용할 수 있습니다. – lurker