LuaPosix: Difference between revisions
m (Added example and more detailed description of the luaposix.access function) |
(→Lua Posix: more readable coding example for listing the posix functions) |
||
Line 1: | Line 1: | ||
=Lua Posix= | =Lua Posix= | ||
This is a list of the Lua Posix functions. Included is helpful | This is a list of the Lua Posix functions. Included is helpful snippets of code. | ||
Install lua posix. To get this list do: | Install lua posix. To get this list do: | ||
require "posix" | |||
for a in pairs( | for a in pairs(posix) do | ||
print(a) | |||
end | |||
==access== | ==access== |
Revision as of 22:45, 11 November 2007
Lua Posix
This is a list of the Lua Posix functions. Included is helpful snippets of code. Install lua posix. To get this list do:
require "posix" for a in pairs(posix) do print(a) end
access
INPUT
- Path- file or directory path that wants to be checked
- Permission - what permissions do you want to check
- "r" = read
- "w" = write
- "x" = execute
- "f" = all permissions? not sure
OUPUT
- string - 0 for success, nil for failure if done
bar = require "posix" temp = bar.access("/etc/passwd", "w") print(temp)
Will give more information like
bar = require "posix" print(bar.access("/etc/passwd", "w")) --If nil will give back the error too nil /etc/passwd: Permission denied 13
chdir
INPUT
- Path - where do you want to change directory to
OUPUT
- 0 if success
- nil if failed
bar = require "posix" bar.chdir("/etc/") --print(bar.getcwd()) to see where you are
0 if success, nil if failure. If you
print(bar.chdir("/var/lob")) -- it will print the system error message also nil /var/lob: No such file or directory 2
The access function returns three values altogether; the following example may help to distinguish their use:
lpos = require "posix" ptr, msg, code = lpos.access("/etc/dhcp") if ptr == nil then print("msg = " .. msg) print("code = " .. code) else print("ptr = " .. ptr) end
chmod
INPUT
- PATH - where is the file or directory
- MODE - what mode to you want to change on the file
OUPUT
- string - 0 if sucess, nil failure
bar = require "posix" bar.chmod("/etc/passwd", "a=rwx") --looks like you need to use the ugoa format for this, not numbers
chown
INPUT
- Path-location of file or directory
- UID - User id number
- GID - Group id number
OUPUT
- String - 0 is success and nil for failure
bar = require "posix" print(bar.chown("/etc/passwd",100,200) --above will give back nil. Since we printed it will also give back the system errors.
ctermid
INPUT
- NONE- DISPLAYS the terminal id
OUTPUT
- String with the terminal id
bar = require "posix" print(bar.ctermid())
dir
Directory listing INPUT
- PATH - directory
OUTPUT
- TABLE - table with the file name contents of the directory
- Failure returns a nil value
bar = require "posix" bobo = bar.dir("/var/log") for a,b in ipairs(bobo) do print(b) end -- the bobo table will output all the file names in /var/log/
errno
Display the error information
INPUT
- NONE
OUPUT
- Success, or Error message
bar = require "posix" a,b = bar.dir("/var/foo"), bar.errno() print(a,b) -- a will be nil or 0, b will be No such file or directory or Success
exec
Replaces the running process with the command specified. Command line arguments are given as additional arguments. (To start a sub process, you probably want fork+exec, not just exec.)
INPUT
- PATH-Location of binary
- ARGs-options to pass to binary
OUTPUT
- Strings
bar = require "posix" bobo = bar.exec("/bin/ls", "-l", "/etc/")
files
Returns an interator function that loops over each file in the given directory
INPUT
- PATH- Directory
OUPUT
require "posix"
for name in posix.files("/etc") do print (name) end
fork
INPUT
- None
OUTPUT returns: -1 on error, 0 to the child process, and the pid of the child to the parent.
require("posix") print ("parent: my pid is: " .. posix.getpid("pid")) local pid = posix.fork () if ( pid == -1 ) then print ("parent: The fork failed.") elseif ( pid == 0 ) then print ("child: Hello World! I am pid: " .. posix.getpid("pid") ) print ("child: I'll sleep for 1 second ... ") posix.sleep(1) print ("child: Good bye"); else print ("parent: While the child sleeps, I'm still running.") print ("parent: waiting for child (pid:" .. pid .. ") to die...") posix.wait(pid) print ("parent: child died, but I'm still alive.") print ("parent: Good bye") end
parent: my pid is: 11050 child: Hello World! I am pid: 11051 child: I'll sleep for 1 second ... parent: While the child sleeps, I'm still running. parent: waiting for child (pid:11051) to die... child: Good bye parent: child died, but I'm still alive. parent: Good bye
getcwd
INPUT
- NONE
OUTPUT
- String- contents of which is the current working directory
bar = require "posix" print(bar.getcwd())
getenv
INPUT
- NONE
OUPUT
- Table - Current Environment settings
bar = require "posix" bobo = bar.getenv() for a,b in pairs(bobo) do print(b) end -- Varible - Value
getgroup
INPUT
- GID, or groupname
OUPUT
- TABLE -contents of which hold the group name,gid, and users
bar = require "posix" bobo = bar.getgroup(1000) for a,b in pairs(bobo) do print(a,b) end --if you use pairs then bobo will print also the name and gid or the group --if you use ipairs then just the group members 1 user1 2 user2 name wheel gid 1
getlogin
Couldn't get it to work
INPUT
- NONE
OUPUT
- UNKNOWN
getpassword
INPUT
- NAME or UID
OUPUT
- TABLE- values from /etc/passwd
uid,name,gid,password,gecos,dir,shell
bar = require "posix" bobo = bar.getpasswd("root") for a,b in pairs(bobo) do print(a,b) end --uid 0 --name root --gid 0 --passwd x --gecos root --dir /root/ --shell /bin/bash
getprocessid
INPUT
- Selector - either [egid,euid,gid,uid,pgrp,pid,ppid,NULL]
OUPUT
- Number that matches the current process and the selector
bar = require "posix" print(bar.getprocessid("gid")) 18456 --it just printed the current process id for the script or interactive lua.
Is there a version difference here? AL 1.7.7 calls this "getpid" Nangel
kill
INPUT
- PID- process identifier
- Signal- to send to the process
OUPUT
bar = require "posix" --kill your current process bobo = bar.getprocessid("pid") bar.kill(bobo,9) ---Signals looks to be the number signals accepted in Unix
link
Hard Links INPUT
- Oldpath-
- Newpath-
'OUTPUT If you want output 0 sucess, nil errors
bar = require "posix" bobo = bar.link("/etc/passwd", "testfile") -- 0 for success, nil for errors
mkdir
INPUT
- PATH-path to new dir
OUTPUT If you are looking for output-
- 0 for success
- nil for failure
bar = require "posix" bar.mkdir("/home/user/bobo") --set the above to a variable to get output
mkfifo
INPUT
- PATH- where to make the fifo
patchconf
putenv
readlink
rmdir
setgid
setuid
sleep
stat
symlink
sysconf
times
ttyname
umask
uname
utime
wait
If you are using this under linux also get