When I run the following script I get errors when I use the list form if the system call. Why is this?
system('rm test?.out 2> /dev/null');
print " ------\n test 1\n";
$rc = system('/usr/bin/ps', '>' , 'test1.out', '&');
print ' rc=',$rc,"\n";
print " test1.out not created\n" unless -e 'test1.out';
print " ------\n test 2\n";
$rc = system('/usr/bin/ps > test2.out &');
print ' rc=',$rc,"\n";
print " test2.out not created\n" unless -e 'test2.out';
print " ------\n test 3\n";
$rc = system('/usr/bin/ps', '>' , 'test3.out');
print ' rc=',$rc,"\n";
print " test3.out not created\n" unless -e 'test3.out';
The output is...
------
test 1
usage: ps [ -aAdeflcjLPy ] [ -o format ] [ -t termlist ]
[ -u userlist ] [ -U userlist ] [ -G grouplist ]
[ -p proclist ] [ -g pgrplist ] [ -s sidlist ]
'format' is one or more of:
user ruser group rgroup uid ruid gid rgid pid ppid pgid sid ta
+skid
pri opri pcpu pmem vsz rss osz nice class time etime stime
f s c lwp nlwp psr tty addr wchan fname comm args projid proje
+ct
rc=256
test1.out not created
------
test 2
rc=0
------
test 3
usage: ps [ -aAdeflcjLPy ] [ -o format ] [ -t termlist ]
[ -u userlist ] [ -U userlist ] [ -G grouplist ]
[ -p proclist ] [ -g pgrplist ] [ -s sidlist ]
'format' is one or more of:
user ruser group rgroup uid ruid gid rgid pid ppid pgid sid ta
+skid
pri opri pcpu pmem vsz rss osz nice class time etime stime
f s c lwp nlwp psr tty addr wchan fname comm args projid proje
+ct
rc=256
test3.out not created
As you can see only Test 2 is successful. Why is this? Is there a correct way to execute a statement with an ampersand as the last char using the list form if system?
These tests were done on a Sun box using Perl 5.8.
edited: Mon Jul 28 18:28:33 2003
by jeffa - code tags