LINUX.ORG.RU

ls -1 (это единица)

anonymous
()

если что -- ls только на терминал несколько файлов в одной строке выводит, а в пайп один файл в одной строке.

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

$ cat test.c #include <fcntl.h> #include <unistd.h>

int main() { int fd[2]; char c; pipe(fd); if(fork()==0) { close(fd[1]); while(read(fd[0],&c,1)!=0) write(1,c,1); } else { close(fd[0]); execl("/bin/ls","ls",0); } return 0; }

$ ls Desktop Mail db docs inet mail nytt pngs s words Inst a.out disk1 films kde3.2 music pics prog test.c $ gcc test.c $ ./a.out Desktop Mail db docs inet mail nytt pngs s words Inst a.out disk1 films kde3.2 music pics prog test.c $

Что же вы врете, батенька...

anonymous
()
Ответ на: комментарий от dilmah

$ cat test.c
#include <fcntl.h>
#include <unistd.h>

int main()
{
int fd[2];
char c;
pipe(fd);
if(fork()==0)
{
close(fd[1]);
while(read(fd[0],&c,1)!=0)
write(1,c,1);
}
else
{
close(fd[0]);
execl("/bin/ls","ls",0);
}
return 0;
}

$ ls
Desktop Mail db docs inet mail nytt pngs s words
Inst a.out disk1 films kde3.2 music pics prog test.c
$ gcc test.c
$ ./a.out
Desktop Mail db docs inet mail nytt pngs s words
Inst a.out disk1 films kde3.2 music pics prog test.c



anonymous
()
Ответ на: комментарий от anonymous

кончай прикалываться.

execl("/bin/ls","ls",0); -- где ты тут fd[1] поставил??  И dup2 нигде не делал.

dlagnox@nnwdlagnox11 /cygdrive/d/boa
$ ls
BOA.SH                    boa_final      exec.log.failed        people.txt
ab_footprint_lock_4       boa_old.sh     exec.tail              res_lock_0
ab_mail_badbuild.txt      boa_res        failed_tests           tsys.cpp
ab_mail_crash.txt         build.log      gran_footprint_lock_4  victims.txt
ab_mail_fail.txt          build.tail     kk_build.log           xxx
ab_mail_head_failure.txt  checkout.log   kk_build.tail
ab_mail_head_success.txt  checkout.tail  kk_mail_badbuild.txt
boa.bat                   exec.log       mail_badcheckout.txt

dlagnox@nnwdlagnox11 /cygdrive/d/boa
$ ls | grep build.log
build.log
kk_build.log

dilmah ★★★★★
()
Ответ на: комментарий от anonymous

Скажи "ls | less" - будешь удивлён.

anonymous
()
Ответ на: комментарий от dilmah

ой, и правда стормозил c dup :) выходит, через трубку он на новой строке каждое имя выводит, а если без трубы, то подряд. Почему такое двоякое поведение?

anonymous
()
Ответ на: комментарий от anonymous

> Почему такое двоякое поведение?

понятно что нормальное поведение в системе где все ориентировано на обработку простых текстовых файлов это выводить по одному файлу в строке -- но видимо исторически решили что пользователю это не совсем удобно, поэтому ls проверяет терминал stdout или нет и меняет поведение.

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

теперь я понял, спасибо за объяснение

anonymous
()
Ответ на: комментарий от anonymous

Это чем же? Они отличаются только тем, что ls в интерактивном режиме красивости всякие может показывать, и тем, что результат его работы профильтровать другой программой сложнее будет.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.