shell관련 문제인데.. 정말 이상해요.. 아무리 생각해도 이해가
글쓴이: gugudan / 작성시간: 토, 2005/02/19 - 9:41오후
#!/bin/bash /경로/test.sh 111 while read -r data do /경로/test.sh 111 done <aaa.dat
이런식으로 쉘을 만들었는데..
test.sh가 위에는 실행이 되는데
밑에는 실행이 되지 않습니다.
원래는 파일에서 값을 읽어서 처리를 할려고 했는데
하도 되지를 않길래 직접 값을 줬는데도
while loop안에서는 원하는 결과값이 나오질 않습니다.
어떻게 이럴수가 있는거죠?
아무리 생각해봐도 모르겠네요.
Forums:
그럴일이 없는 것이 맞습니다만, 실제 소스 일부를 보여주시면 더 좋겠습니
그럴일이 없는 것이 맞습니다만, 실제 소스 일부를 보여주시면 더 좋겠습니다.
---
http://coolengineer.com
음.. 소스가..
소스는 위에서와 말한것처럼
위에 aaa는 제가 C로 만든 간단한 프로그램이 들어있습니다.
위의 소스를 보면 제가 aaa를 3번 호출했는데
루프 들어가기 전과 루프 끝난 후의 aaa는 정상적으로 실행이 됩니다.
그런데 루프 가운데 있는 aaa는 원하는 결과가 나오지 않습니다.
참고로 aaa라는 프로그램은
로직상 종료할때 특정 문자를 printf를 이용해서 출력할 뿐입니다.
그런데 루프 안에 있는건 그냥 빈 라인만 나옵니다.
루프 전과 루프 마지막은 원하는 결과가 나오고 있고요..
aaa의 로직이 문제가 있다면 루프 전과 루프 후에도 결과가
안나와야 정상인거 아닌가요?
루프 전과 루프 후가 정상적으로 나온다면 그건 이상이 없는거 아닌가요?
test.dat 은 어떤녀석인가요?시험삼아 test.dat 파일을
test.dat 은 어떤녀석인가요?
시험삼아 test.dat 파일을 다음처럼 고쳐서 다시 실행해보시면 어떨까요.
해서 실행해 보시면 루프가 두번 돌아서 ./aaa 11111 이 네번 실행될 것으로 보이는군요.
----
아발발다빠따반반나다발딸발발다빠따따맣밤밤따받따발발다따밝다발발다빠따따밤반다빠따다맣밥발
발다따밥다발발다따박다발발다빠따따밞밭밭다따다맣아희
네..
네..역시 마찬가지입니다.
지금 로직에서는 test.dat를 읽어서 사용하는것은 없고..
단지 루프 갯수에만 이용되겠네요..
10개를 하면 10개의 빈라인만 생성되네요.
역시나 처음과 마지막만 값이 나오네요..
맨 위에 set -x 를 넣고 수행해보시고,./aaa 에 해당하는 놈
맨 위에 set -x 를 넣고 수행해보시고,
./aaa 에 해당하는 놈도 비슷하게 디버깅해보세요.
---
http://coolengineer.com
원인을 찾았네요.
루프를 돌리지 않고 단순하게 이벤트만 오면 처리를 하게끔 코딩을 해
놓았더군요..
쉘에서 파일을 읽을때 이벤트가 발생했는데
막상 다른 이벤트이니 원하는 결과값을 가져오지 못하고 처리를 하다 보니
결과값이 나오질 않았네요..
그런데 궁금한것이 생겼네요.
위와 같은 문제가 발생하여
문제를 해결할려고 생각을 해 보았는데..
이런식으로 처리를 하였는데 cnt값을 출력해보니..
25000부터 50000이 넘는 경우도 발생을 하더군요..
위에와 같이 처리하는것이 맞는지요?
한 줄 씩 읽는 프로그램이라면, m_socketfd 를 fdopen 으로
한 줄 씩 읽는 프로그램이라면, m_socketfd 를 fdopen 으로 여시고
연 FILE 구조체를 위의 read 대신 fgets 를 사용하여 처리하면 될 것 같습니다.
---
http://coolengineer.com
댓글 달기