Passing parameters for a C program in Linux.

Miles Kaufmann milesck at umich.edu
Tue Jun 30 17:44:50 CEST 2009


On Jun 30, 2009, at 6:46 AM, venutaurus539 at gmail.com wrote:

>       I have to write an automted script which will test my c
> program. That program when run will ask for the commands.

Keep in mind that, if your test script checks the program's output  
before giving it input, you can run into problems with buffering.  The  
standard C library uses line-based buffering when a program is using a  
terminal for output, but when it's outputting to a pipe it uses block  
buffering.  This can be a problem when running a process using  
subprocess--your program will buffer the prompt, and your test script  
won't see it, so the test will deadlock.  The problem can also exist  
in the opposite direction.

Possible solutions:
- Explicitly set both your test script and your program to have line- 
buffered output.
- Add a flush statement whenever you finish writing output and expect  
input.
- Use pexpect, which uses a pseudo-tty and will make C stdio default  
to line buffering.
- Use pdpi's solution, which, since it doesn't wait for a prompt  
before supplying input, doesn't have this issue.



More information about the Python-list mailing list