EnglishFrenchSpanish

OnWorks favicon

sockdown - Online in the Cloud

Run sockdown in OnWorks free hosting provider over Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

This is the command sockdown that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

PROGRAM:

NAME


sockdown - shutdown(2) a socket

netpipes 4.2

SYNOPSIS


sockdown [ fd [how] ]

DESCRIPTION


sockdown performs the shutdown(2) system call on one of its file descriptors specified by
fd. The possible values for how are

┌──────────┬─────────────────────────────────────────────────────────┐
│writeonly │ convert to write-only file descriptor │
│0 │ convert to write-only file descriptor │
│writeonly │ symbolic for same as above │
│1 │ convert to read-only file descriptor │
│readonly │ symbolic for same as above │
│2 │ complete shutdown. no more reads or writes are allowed │
│totally │ symbolic for same as above │
└──────────┴─────────────────────────────────────────────────────────┘

The default fd is 1 (stdout) and the default how is 1.

EXAMPLES


Imagine you have a machine that can perform a service (in this case conversion from ASCII
to fancy postscript) :

server$ faucet 3000 --in --out enscript -2rGhp -

You may then connect to it with a hose. However, the first example enters deadlock :

client$ hose server 3000 -in -out \
sh -c " cat blah.txt & cat > blah.ps "

The enscript blocks waiting for input from the socket because not all of the client
processes have exited. While the cat blah.txt is finished, the cat > blah.ps is not, and
will not be finished until the remote enscript process finishes writing. The enscript
process will not finish writing until it is finished reading, but that client->server half
of the socket is still open and will not be closed until all the client processes are
done. The result is deadlock.

So, we use sockdown to close half of the pipe

client$ hose server 3000 -in -out \
sh -c " ( cat blah.txt ; sockdown ) & cat > blah.ps "

This way when the cat blah.txt is done, half of the socket is shut down and the remote
enscript process runs out of input, causing it to flush its output and exit, so eventually
the whole mess finishes cleanly.

Note: the & on the hose is necessary to prevent another deadlock. If we simply used the ;
to serialize the two cat processes it is possible that the enscript would fill up its
write buffer before the first cat was done causing both processes to block and preventing
the second cat from draining the pipe.

Of course, that idiomatic usage of hose is so useful that it is a special form:

client$ hose server 3000 -slave < blah.txt > blah.ps

Ian Stirling <[email protected]> informs me that sockdown can be used in Linux's
/proc/pid/fd/ directories to tear down hung network connections. I have since used this
myself on a wedged MOMspider. To try this, you have to know the PID of the program and
the file descriptor of the wedged socket (can sometimes be found by running strace and see
if the program is stuck in a read(2) system call). If the PID is 991 and the socket's
descriptor is 5, you do this as root:

bash# sockdown 1 2 > /proc/991/fd/5

ERRORS


Socket operation on non-socket

Invalid argument (seen on Solaris) The fd you specified does not refer to a socket. This
happens when you run sockdown by itself (it is unlikely that any of the file descriptors
attached to an interactive shell are actually sockets) or if you goof up your faucet/hose
command and forgot to dup(2) one of your descriptors.

Bad file number You gave it a bad file number for fd. If you have enough skill to
actually generate this error, you probably know what is wrong.

If you encounter any other errors, clue me in.

Use sockdown online using onworks.net services


Free Servers & Workstations

Download Windows & Linux apps

  • 1
    fre:ac - free audio converter
    fre:ac - free audio converter
    fre:ac is a free audio converter and CD
    ripper for various formats and encoders.
    It features MP3, MP4/M4A, WMA, Ogg
    Vorbis, FLAC, AAC, and Bonk format
    support, ...
    Download fre:ac - free audio converter
  • 2
    Matplotlib
    Matplotlib
    Matplotlib is a comprehensive library
    for creating static, animated, and
    interactive visualizations in Python.
    Matplotlib makes easy things easy and
    hard thing...
    Download Matplotlib
  • 3
    BotMan
    BotMan
    Write your chatbot logic once and
    connect it to one of the available
    messaging services, including Amazon
    Alexa, Facebook Messenger, Slack,
    Telegram or even yo...
    Download BotMan
  • 4
    Joplin
    Joplin
    Joplin is a free and open source
    note-taking and to-do application that
    can handle a large number of notes in
    Markdown format, organize them into
    notebooks and...
    Download Joplin
  • 5
    gerbv  a Gerber (RS-274X) viewer
    gerbv � a Gerber (RS-274X) viewer
    Gerbv is an open source Gerber file
    (RS-274X only) viewer. Gerbv lets you
    load several files on top of each other,
    do measurements on the displayed image,
    etc. ...
    Download gerbv � a Gerber (RS-274X) viewer
  • 6
    Iometer
    Iometer
    I/O performance Analysis Tool.
    Audience: Developers, Information
    Technology, Science/Research, System
    Administrators. User interface: Win32
    (MS Windows). Progr...
    Download Iometer
  • More »

Linux commands

Ad