Могу ли я использовать dup2() для отправки вывода на стандартный вывод вместо сокета домена Unix?Linux

Ответить
Anonymous
 Могу ли я использовать dup2() для отправки вывода на стандартный вывод вместо сокета домена Unix?

Сообщение Anonymous »

Кажется, легко найти примеры использования dup2() для того, чтобы вывод (изначально) предназначенный для стандартного вывода, вместо этого направлялся в сокет:

Код: Выделить всё

char *stdoutMsg = "This message will be sent to stdout\n";
write(STDOUT_FILENO,stdoutMsg,strlen(stdoutMsg));
// message sent to stdout
int sockid = socket(PF_UNIX,SOCK_STREAM,0);
dup2(sockid,STDOUT_FILENO);
close(sockid);
send(STDOUT_FILENO,stdoutMsg,strlen(stdoutMsg),0);
// message now sent to socket
По нескольким причинам — детали скучны и, вероятно, не имеют значения — я бы хотел сделать обратное; привести к тому, что вывод (изначально), предназначенный для сокета (домена Unix), вместо этого будет идти на стандартный вывод:

Код: Выделить всё

int sockid = socket(PF_UNIX,SOCK_STREAM,0);
char *sockMsg = "This message will be sent to socket\n";
send(sockid,sockMsg,strlen(sockMsg),0);
// message sent to socket
dup2(STDOUT_FILENO,sockid);
close(STDOUT_FILENO);
write(sockid,sockMsg,strlen(sockMsg));
// message not sent to stdout
Похоже, это не работает — ни в одном случае. В чем проблема, могу ли я заставить это работать?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ain-socket
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»