On Linux at least, most distros seem to use pam for authentication. One module that comes with pam is the limits module. Quoting from the README for pam_limits:
The pam_limits PAM module sets limits on the system resources that can be obtained in a user-session. Users of uid=0 are affected by this limits, too.
As a result, you can set per user, per group, and default limits, in both categories hard (root sets this and the process cannot request higher) and soft limits. The soft limits are typically set lower than the hard limits, and the app can increase it upwards until it hits the hard limit.
In your case, if the process you want to increase the limits of runs as a regular user, you can increase the limits for that user or group. As an example, I have some mysql cron jobs on some servers that require extra file handles to be opened, so I set this:
$ cat /etc/security/limits.d/mysql.conf
@mysql soft nofile 100000
@mysql hard nofile 200000
There is nothing that needs to be restarted; when you su to that user, you can immediately see that the new limits take effect.
Another thing that you can do if you are on a typical RedHat derived system is put the ulimit call that you want into the /etc/sysconfig/$SERVICE script. As an example, apache's init script is named /etc/init.d/httpd, and it sources the /etc/sysconfig/httpd configuration file if it's found. I have found it easier to manage by doing this instead of editing the init script itself because init scripts get updated when the rpm is upgraded, but sysconfig files are only updated if they are not changed from the default.