2014-08-27 2 views
1

vxWorks 6.7에서 스크립트를 실행해야합니다. vxworks 5.5의 execute() 함수를 사용하여 수행 할 수 있습니다. 내가 신청하는이 솔루션은 다음 코드와 같이 표준 입력 리디렉션을 사용하는 것입니다 : 내가 읽기를 누락 (주석 임) 부분을 실행하고vxworks 6.7에서 스크립트를 실행하기 위해 stdin으로 리디렉션

newStdIn = open("myScript.txt",O_RDONLY,0644); 
    oldStdIn=ioGlobalStdGet(STD_IN); 
    ioGlobalStdSet(STD_IN, newStdIn); 
    /*Read file here and execute*/ 
    ioGlobalStdSet(STD_IN,oldStdIn); /*Restore old stdIn*/ 
    close(newStdIn); 

.

fdScript = open ("myScript", O_RDONLY); 
    shellGenericInit ("INTERPRETER=Cmd", 0, NULL, &shellTaskName, FALSE, FALSE, fdScript, STD_OUT, STD_ERR); 
    do 
     taskDelay (sysClkRateGet()); 
    while (taskNameToId (shellTaskName) != ERROR); 
    close (fdScript); 

을하지만 스크립트를 처리하지 않고 새로운 쉘을 엽니 다 :

편집 : 다음과 같이 는 Vx 웍스 커널 프로그래머 가이드에 따르면, 스크립트를 실행하는 방법입니다. 이 문제는 내 응용 프로그램이 shellGenericInit을 호출 한 후에 아무 것도하지 않는다는 것입니다.

답변

0

C 인터프리터 쉘 대신 Cmd 쉘을 시작한 것처럼 보입니다. 5.5에서 execute() 함수를 사용했다고 언급 했으므로 스크립트가 C 인터프리터 용이라고 가정합니다.

"INTERPRETER = Cmd"를 "INTERPRETER = C"로 변경해보십시오.

+0

안녕하세요, 답변 해 주셔서 감사합니다. 나는 그것을 시도했다. 내가 직면 한 문제는 매우 구체적입니다. 문제는 shellGenericInit가 작동하지 않을 것입니다. 왜냐하면 쉘 생성이 시스템에서 비활성화 되었기 때문에 문제를 발견하는 데 시간이 걸렸습니다. 다시 한번 감사드립니다. – mjdev